home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1990-11-07 | 6.9 KB | 115 lines | [.Ob./.Ob*] |
- Syntax20.Scn.Fnt
- Syntax10.Scn.Fnt
- Syntax14.Scn.Fnt
- Syntax12.Scn.Fnt
- Syntax16.Scn.Fnt
- Syntax12i.Scn.Fnt
- The Oberon Guide
- System Release 1.2
- rg Gutknecht
- Abstract
- This guide provides a concise and detailed description of the Oberon system on three different levels: the
- user's level, the level of programmers of tools, and the level of implementors of new viewer classes. In
- particular, the guide features a complete documentation of standard commands, a commented series of
- important interface definitions, and a tutorial collection of Oberon programs exemplifying the typical
- Oberon programming style.
- Table of Contents
- Abstract
- Introduction
- History
- Design Principles
- Acknowledgement
- User's Guide
- Commands and Tools
- The Edit Tool Package
- The System Tool Package
- The Compiler Tool Package
- The Miscellaneous Tool Package
- Guide for Programmers of Commands
- Oberon's module hierarchy
- The Display System
- The Text System
- The Oberon Core
- Tutorial Examples
- Write time stamp to system log
- Process selected text
- Open viewer in system track, generate, and display text data
- Open viewer in user track and display existing text
- Grow text viewer
- Process viewer text or sequence of texts, depending on context
- Delete selected part of text in marked viewer
- Copy most recently selected text part to caret's position
- Copy font from visibly marked position to text selection
- Move caret to next character written in italics
- Guide for Programmers of new Frame Classes and Viewer Types
- Frames as Active Objects
- Standard Menu Viewers
- The Canonical Decomposition of an Application
- Tutorial Examples 1: Frame oriented operations
- Display text line within text frame
- Track caret
- Tutorial Examples 2: Text oriented operations
- Save text in buffer
- Insert contents of buffer in text
- Literature
- Ceres Workstation
- Oberon Language
- Oberon System
- List of Oberon Error Numbers
- Incorrect use of language Oberon-2
- Limitations of implementation
- Run-time Trap Numbers
- Introduction
- History
- Oberon is simultaneously the name of a project and of its outcome. The project was started by Niklaus
- Wirth and the author late in 1985 with the goal of developing a modern and portable operating system for
- personal workstations. Its results are an implementation of the system for the Ceres computer and a
- programming language (see section Literature).
- The development of the language Oberon needs perhaps a short justification. It became quite inevitable
- because the type-system of available languages turned out to be too restrictive to express the desired data
- model in a natural and safe way. We refer to report for a definition of the new language, and to the third and
- fourth chapter of this text for some examples of its application.
- Design Principles
- For the present, we focus on the system Oberon, beginning with a brief overview of its design principles. The
- underlying dynamic model is extremely simple. There exists a single process acting as a common carrier of
- multiple tasks. This process repetitively interprets commands, which are the official entities of execution in
- Oberon. Commands are atomic actions operating on the global state of the system. Unlike customary
- interactive programs, they rigorously avoid direct dialogs with the system user.
- The following typical examples indicate the bandwidth covered by the concept of command: Placing the
- caret, inserting a character into a text, selecting a piece of text, deleting a selected piece of text, applying a
- new font to a piece of text, searching a pattern in a text, compiling a software module, opening a viewer,
- backing up a sequence of files to diskette, and displaying a directory. We emphasize that the execution of a
- command always results in non-volatile information. For example, in the last example, this means that the
- displayed directory is a text that might immediately undergo further processing. Typically, commands report
- the outcome of their execution in the form of an entry in the system-log. Therefore, the log provides a
- complete protocol of the current session.
- Commands are initiated by input actions. Apart from a few universal operations, every input action is
- connected with a displayed viewer, to which its further handling is delegated. A viewer in Oberon is a
- rectangular area on the screen that can display any kind of data. Most viewers feature a thin frame and a
- title-bar containing a menu. Any mouse-oriented input is handled by the viewer the mouse points to. Data
- from the keyboard is immediately passed over to the current so-called focus-viewer. We notice that
- command interpretation is a highly decentralized activity in Oberon and, as such, is a substantial
- contribution to what we consider as Oberon's most important quality, namely unlimited extensibility.
- Implementing a new viewer type is a very powerful but also quite far-reaching method to extend the
- Oberon system. It is only appropriate in conjunction with the installation of a new class of displayable
- objects (for example graphics or tables). The fourth chapter will provide more insight into this topic.
- A more moderate way to increase the system's functionality consists in adding new commands operating on
- objects of an already existing class (for example a language compiler operating on text). We shall see in the
- third chapter that Oberon's open and coherent modular architecture provides effective support for that.
- Practically all system ingredients and resources are directly accessible and usable via modular interfaces on
- as high a level of abstraction as possible.
- We should deduce from the foregoing that there is no symbolic wall in Oberon separating actual users from
- developers. Users are encouraged to customize the system and tailor it to their individual needs by designing
- and implementing private commands and facilities. Little is "hardwired" in the system. However, there are
- several general conventions and existing tools. They are presented in the next chapter.
- Acknowledgement
- I gratefully acknowledge Niklaus Wirth's initiative and willingness for travelling through the adventures of
- designing and building a new workstation, a new language, and a new operating system, escpecially under
- the given severe restrictions of personal resources. Without his competence and extraordinary commitment
- this mammoth-project could not have been successfully completed. I am also very grateful for the
- possibility to include an extract of Niklaus Wirth's Draw guide in the first chapter. My thanks further go to
- the Oberon user's community, in particular to Martin Reiser, Hans-Peter M
- ssenb
- ck, and Beverly Sanders
- for their constructive critisism and valuable suggestions for improvements.
-